﻿using System;

namespace Aufgaben;
/* Sie entwickeln eine Software zur Buchung von Reisen. Die Reisenden können ihre gebuchte Reise vor Reiseantritt stornieren. Dazu sollen zwei Algorithmen implementiert werden - ein kulanter Algorithmus und ein strenger Algorithmus. Beim Buchen der Reise wird einer der Algorithmen für die Stornogebühren ausgesucht, der Algorithmus könnte sich aber auch nachträglich noch ändern. Damit der Algorithmus leicht austauschbar ist, verwenden Sie das Strategy-Muster (hier aber über Delegates umgesetzt).
 *
 *
 * Jede Reise hat einen bestimmten Storno-Algorithmus.
 * Da der Algorithmus beliebig getauscht werden können soll, ist er von der Reise entkoppelt.
 * Es gibt den strengen Storno Algorithmus und den kulanten Storno Algorithmus.
 *
 * Eine Bronze-Reise verwendet standardmäßig den strengen Algorithmus, eine Gold-Reise verwendet standardmäßig den kulanten Algorithmus.
 *
 * Erstellen Sie ein Klassendiagramm und testen Sie das Programm mit C#-Code.
 */
public class Aufgabe_2
{
    public static void Main(string[] args)
    {
        BronzeReise br = new BronzeReise(DateTime.Now.AddDays(10), 100);
        GoldReise gr = new GoldReise(DateTime.Now.AddDays(10), 200);

        Console.WriteLine("Bronze Reise:");
        Console.WriteLine(br.PreisBerechnen());
        Console.WriteLine(br.TageBestimmen());
        Console.WriteLine(br.BerechneStorno());
        
        br.SetStornoAlgorithmus(KulanterStornoAlgorithmus.StornoBerechnen);
        Console.WriteLine(br.BerechneStorno());

        Console.WriteLine("Gold Reise:");
        Console.WriteLine(gr.PreisBerechnen());
        Console.WriteLine(gr.TageBestimmen());
        Console.WriteLine(gr.BerechneStorno());
    }
}